package com.zuo_book.common;

import lombok.Getter;
import com.zuo_book.common.response.IErrorCode;

/**
 * 结果码枚举
 */
@Getter
public enum ResultCode implements IErrorCode {
    SUCCESS(200, "操作成功"),
    FAILED(500, "操作失败"),
    VALIDATE_FAILED(400, "参数校验失败"),
    UNAUTHORIZED(401, "暂未登录或token已过期"),
    FORBIDDEN(403, "没有相关权限"),
    NOT_FOUND(404, "请求的资源不存在"),
    
    // 用户相关错误码
    USERNAME_EXISTS(1001, "用户名已存在"),
    EMAIL_EXISTS(1002, "邮箱已存在"),
    USER_NOT_EXIST(1003, "用户不存在"),
    PASSWORD_ERROR(1004, "密码错误"),
    ACCOUNT_DISABLED(1005, "账号已被禁用"),
    
    // 书籍相关错误码
    BOOK_NOT_EXIST(20001, "书籍不存在"),
    CHAPTER_NOT_EXIST(20002, "章节不存在"),
    BOOK_ALREADY_EXIST(20003, "书籍已存在"),
    
    // 章节相关错误码
    CATEGORY_NOT_EXIST(4001, "分类不存在"),
    
    // 评论相关错误码
    COMMENT_NOT_EXIST(30001, "评论不存在"),
    
    // 笔记相关错误码
    NOTE_NOT_EXIST(22001, "笔记不存在"),
    
    // 阅读历史相关错误码
    HISTORY_NOT_EXIST(23001, "阅读历史不存在"),
    
    // 评分相关错误码
    RATING_NOT_EXIST(8001, "评分不存在"),
    RATING_EXISTS(8002, "已经评分过了"),
    
    // 收藏相关错误码
    ALREADY_FAVORITED(21001, "已经收藏过该书籍"),
    NOT_FAVORITED(21002, "未收藏该书籍"),
    
    // 消息相关错误码
    MESSAGE_NOT_EXIST(10001, "消息不存在"),
    
    /**
     * 无权限访问
     */
    NO_PERMISSION(40300, "无权限执行该操作"),
    
    /**
     * 已经点赞过
     */
    ALREADY_LIKED(8003, "已经点赞过了");

    private final Integer code;
    private final String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
} 